Parallel Garbage Collection with Larceny and Cilk

نویسنده

  • Felix S. Klock
چکیده

Automated memory management is becoming a standard feature for programming language runtimes. Requiring developers to explicitly release blocks of memory that they believe to be no longer in use often leads to space leaks and bugs. Also, requiring the developers to explicitly release memory leads to significant complication when interfacing different program modules. Therefore, many modern programming languages such as Java and C# require that the runtime remove this burden from the shoulders of the human developer, and instead the runtime selects objects that could never be used, and reclaims them itself. However, most garbage collectors are written assuming that they are hosted on a single sequential processor, rather than on a machine with many processing units available. As machines offer more and more processing units, it will be important for the garbage collectors to make use of all of the processing units available to ensure that programs using automatic memory management remain competitive with programs using explicit memory management. Parallel garbage collectors have been the subject of previous research [6, 1, 4]. I decided to evaluate how hard it would be to take an existing state-of-the-art research garbage collector and parallelize it. Since some successful parallel garbage collectors promoted work stealing [2] as an effective load-balancing technique, I decided it would also be useful to use Cilk as the underlying parallel runtime. Unfortunately, this decision proved premature. While I managed to work through most of the issues I encountered with Cilk, I am still stymied by a particularly nasty problem which I am actively investigating with the current Cilk maintainers (see subsection 5.3).

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

CellCilk: Extending Cilk for Heterogeneous Multicore Platforms

The potential of heterogeneous multicores, like the Cell BE, can only be exploited if the host and the accelerator cores are used in parallel and if the specific features of the cores are considered. Parallel programming, especially when applied to irregular task-parallel problems, is challenging itself. However, heterogeneous multicores add to that complexity due to their memory hierarchy and ...

متن کامل

Parallel Copying Garbage Collection Using Delayed Allocation

We present a new approach to parallel copying garbage collection on symmetric multiprocessor (SMP) machines appropriate for Java and other object-oriented languages. Parallel, in this setting, means that the collector runs in several parallel threads. Our collector is based on a new idea called delayed allocation, which completely eliminates the fragmentation problem of previous parallel copyin...

متن کامل

Performance Analysis of the Cilk Locality Runtime

Many parallel programming platforms, such as Cilk Plus, implement a work-stealing scheduler to load-balance parallel computations, since it provides a provably good execution time bound and performs well in practice. However, most work-stealing schedulers, including the Cilk Plus scheduler, do not utilize shared caches and memory efficiently. The Cilk Locality runtime was developed to address t...

متن کامل

A Comparison of some recent Task-based Parallel Programming Models

The need for parallel programming models that are simple to use and at the same time e cient for current ant future parallel platforms has led to recent attention to task-based models such as Cilk++, Intel TBB and the task concept in OpenMP version 3.0. The choice of model and implementation can have a major impact on the nal performance and in order to understand some of the trade-o s we have ...

متن کامل

The Layers of Larceny’s Foreign Function Interface

The Foreign Function Interface (FFI) in Larceny supports interacting with dynamically loaded C libraries via glue code written in Scheme. The programmer does not need to develop any C code to interface with C libraries. The FFI is divided into layers of Larceny Scheme code; the lower layers implement kernel functionality, and the higher layers support portable glue code development. The lower l...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2005